#include"Protocol.hpp"
#include"TcpServer.hpp"
#include"Servercal.hpp"
#include<iostream>

static void Usage(std::string port)
{
    std::cout<<"/nUsage:"<<port<<" serverport"<<std::endl;
}

//servercal serverport
int main(int argc,char* argv[])
{
    if(argc!=2)
    {
        Usage(argv[0]);
        exit(1);
    }
    uint16_t serverport= std::stoi(argv[1]);
//     Response rp1(1000,1);
//     std::string s;
//     rp1.Serialize(&s);
//     s=Encode(s);
//     std::cout<<s<<std::endl;
//     Response temp;
//     std::string content;
//    bool r= Decode(s,&content);
//    temp.Deserialize(content);
//    std::cout<<temp.result_<<" "<<temp.code_<<std::endl;
//     Request rq1(111,222,'*');
//     //1.序列化：结构体变字符串
//     std::string s;
//     rq1.Serialize(&s);
//     s=Encode(s);//序列化后要包装报文
//     std::cout<<s<<std::endl;
//     //2.反序列化：字符串变结构体
//     std::string content;
//    bool r= Decode(s,&content);
//    Request temp;
//    temp.Deserialize(content);
//    std::cout<<temp.x_<<std::endl;
//    std::cout<<temp.op_<<std::endl;
//    std::cout<<temp.y_<<std::endl;

    Servercal cal;
    TcpServer*tp=new TcpServer(serverport,std::bind(&Servercal::Calculator,&cal,std::placeholders::_1));
    tp->Init();
    daemon(0,0);
    tp->Start();//守护进程
    return 0;
}